package VISTA;
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.BorderFactory;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;

import javax.swing.WindowConstants;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.SwingUtilities;

import MODELO.ModeloIngrediente;
import bean.JTextFieldValidator;


/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class frmProductos extends javax.swing.JFrame {
	private JPanel pnlProductos;
	private JLabel lblCategoriaProducto;
	private JTextField txtDescripcionProducto;
	private JLabel lblDescripcionProducto;
	private JTextField txtCodigoProducto;
	private JLabel lblCodigoProducto;
	private JLabel jLabel1;
	private JComboBox cmbCantidad;
	private JButton btnRetirarReceta;
	private JButton btnAgregarReceta;
	private JTable tblReceta;
	private JScrollPane scpReceta;
	private JTable tblIngredientes;
	private JScrollPane scpIngredientes;
	private JPanel pnlIngredientes;
	private JButton btnCancelarProducto;
	private JButton btnOkProducto;
	private JLabel lblBsProducto;
	private JTextField txtPrecioProducto;
	private JLabel lblPrecioProducto;
	private JComboBox cmbCategoriaProducto;
	private JPanel pnlDatosProductos;

	/**
	* Auto-generated main method to display this JFrame
	*/
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				frmProductos inst = new frmProductos();
				inst.setLocationRelativeTo(null);
				inst.setVisible(true);
			}
		});
	}
	
	public frmProductos() {
		super("Registro de Productos");
		initGUI();
	}
	
	private void initGUI() {
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			{
				pnlProductos = new JPanel();
				getContentPane().add(pnlProductos, BorderLayout.CENTER);
				pnlProductos.setLayout(null);
				pnlProductos.setBackground(new java.awt.Color(255,255,255));
				pnlProductos.setPreferredSize(new java.awt.Dimension(980, 696));
				{
					
					pnlDatosProductos = new JPanel();
					pnlDatosProductos.setBorder(BorderFactory.createTitledBorder("Datos"));
					pnlProductos.add(pnlDatosProductos);
					pnlDatosProductos.setLayout(null);
					pnlDatosProductos.setBounds(18, 39, 985, 595);
					pnlDatosProductos.setBackground(new java.awt.Color(228,196,116));
					{
						lblCodigoProducto = new JLabel();
						pnlDatosProductos.add(lblCodigoProducto);
						lblCodigoProducto.setText("Codigo:");
						lblCodigoProducto.setBounds(17, 35, 63, 26);
					}
					{
						txtCodigoProducto = new JTextFieldValidator(JTextFieldValidator.SOLO_NUMEROS);
						pnlDatosProductos.add(txtCodigoProducto);
						txtCodigoProducto.setBounds(118, 34, 194, 28);
					}
					{
						lblDescripcionProducto = new JLabel();
						pnlDatosProductos.add(lblDescripcionProducto);
						lblDescripcionProducto.setText("Descripcion:");
						lblDescripcionProducto.setBounds(360, 35, 92, 26);
					}
					{
						txtDescripcionProducto = new JTextField();
						pnlDatosProductos.add(txtDescripcionProducto);
						txtDescripcionProducto.setBounds(464, 34, 193, 28);
					}
					{
						lblCategoriaProducto = new JLabel();
						pnlDatosProductos.add(lblCategoriaProducto);
						lblCategoriaProducto.setText("Categoria:");
						lblCategoriaProducto.setBounds(17, 80, 91, 26);
					}
					{
						ComboBoxModel cmbCategoriaProductoModel = 
							new DefaultComboBoxModel(
									new String[] { "Item One", "Item Two" });
						cmbCategoriaProducto = new JComboBox();
						pnlDatosProductos.add(cmbCategoriaProducto);
						cmbCategoriaProducto.setModel(cmbCategoriaProductoModel);
						cmbCategoriaProducto.setBounds(120, 79, 194, 28);
					}
					{
						lblPrecioProducto = new JLabel();
						pnlDatosProductos.add(lblPrecioProducto);
						lblPrecioProducto.setText("Precio Unitario:");
						lblPrecioProducto.setBounds(360, 79, 117, 29);
					}
					{
						txtPrecioProducto = new JTextFieldValidator(JTextFieldValidator.SOLO_NUMEROS);
						pnlDatosProductos.add(txtPrecioProducto);
						txtPrecioProducto.setBounds(464, 80, 126, 28);
					}
					{
						lblBsProducto = new JLabel();
						pnlDatosProductos.add(lblBsProducto);
						lblBsProducto.setText("Bs");
						lblBsProducto.setBounds(609, 80, 48, 28);
					}
					{
						btnOkProducto = new JButton();
						pnlDatosProductos.add(btnOkProducto);
						btnOkProducto.setText("OK");
						btnOkProducto.setBounds(629, 542, 113, 31);
						btnOkProducto.setActionCommand("OK");
					}
					{
						btnCancelarProducto = new JButton();
						pnlDatosProductos.add(btnCancelarProducto);
						btnCancelarProducto.setText("Cancelar");
						btnCancelarProducto.setBounds(765, 542, 112, 31);
						btnCancelarProducto.setActionCommand("Cancelar");
					}
					{
						pnlIngredientes = new JPanel();
						pnlDatosProductos.add(pnlIngredientes);
						pnlIngredientes.setBackground(new java.awt.Color(237,206,149));
						pnlIngredientes.setBorder(BorderFactory.createTitledBorder("Receta"));
						pnlIngredientes.setLayout(null);
						pnlIngredientes.setBounds(29, 126, 916, 395);
						{
							scpIngredientes = new JScrollPane();
							pnlIngredientes.add(scpIngredientes);
							scpIngredientes.setBounds(17, 32, 243, 195);
							{
								TableModel tblIngredientesModel = 
									new DefaultTableModel(
											new String[][] { { "", "" }, { "", "" } ,{ "", "" }, { "", "" },{ "", "" }, { "", "" },{ "", "" }, { "", "" },{ "", "" }, { "", "" },{ "", "" }, { "", "" },{ "", "" }, { "", "" },{ "", "" }, { "", "" },{ "", "" }, { "", "" },{ "", "" }, { "", "" },{ "", "" }, { "", "" },{ "", "" }, { "", "" },{ "", "" }, { "", "" },{ "", "" }, { "", "" },{ "", "" }, { "", "" },{ "", "" }, { "", "" }},
											new String[] { "Codigo", "Descripcion" });
								tblIngredientes = new JTable();
								scpIngredientes.setViewportView(tblIngredientes);
								tblIngredientes.setModel(tblIngredientesModel);
								tblIngredientes.setPreferredSize(new java.awt.Dimension(240,183));
							}
						}
						{
							scpReceta = new JScrollPane();
							pnlIngredientes.add(scpReceta);
							scpReceta.setBounds(348, 32, 551, 156);
							{
								TableModel tblRecetaModel = 
									new DefaultTableModel(
											new String[][] { { "", "" }, { "", "" },{ "", "" }, { "", "" },{ "", "" }, { "", "" },{ "", "" }, { "", "" },{ "", "" }, { "", "" },{ "", "" }, { "", "" },{ "", "" }, { "", "" },{ "", "" }, { "", "" },{ "", "" }, { "", "" },{ "", "" }, { "", "" },{ "", "" }, { "", "" },{ "", "" }, { "", "" },{ "", "" }, { "", "" },{ "", "" }, { "", "" },{ "", "" }, { "", "" },{ "", "" }, { "", "" },{ "", "" }, { "", "" },{ "", "" }, { "", "" },{ "", "" }, { "", "" },{ "", "" }, { "", "" } },
											new String[] { "Codigo", "Descripcion", "Cantidad" });
								tblReceta = new JTable();
								scpReceta.setViewportView(tblReceta);
								tblReceta.setModel(tblRecetaModel);
								tblReceta.setPreferredSize(new java.awt.Dimension(618,134));
							}
						}
						{
							btnAgregarReceta = new JButton();
							pnlIngredientes.add(btnAgregarReceta);
							btnAgregarReceta.setText("Agregar a Receta");
							btnAgregarReceta.setBounds(53, 259, 207, 36);
							btnAgregarReceta.setActionCommand("Agregar");
						}
						{
							btnRetirarReceta = new JButton();
							pnlIngredientes.add(btnRetirarReceta);
							btnRetirarReceta.setText("Retirar de Receta");
							btnRetirarReceta.setBounds(53, 317, 207, 36);
							btnRetirarReceta.setActionCommand("Retirar");
						}
						{
							ComboBoxModel cmbCantidadModel = 
								new DefaultComboBoxModel(
										new String[] { "Item One", "Item Two" });
							cmbCantidad = new JComboBox();
							pnlIngredientes.add(cmbCantidad);
							int i =1;
							while(i<=100){
								cmbCantidad.addItem(i);
								i++;
							}
							cmbCantidad.setBounds(266, 77, 76, 22);
						}
						{
							jLabel1 = new JLabel();
							pnlIngredientes.add(jLabel1);
							jLabel1.setText("Cantidad");
							jLabel1.setBounds(271, 41, 65, 24);
						}
					}
				}
			}
			pack();
			this.setSize(1073, 726);
		} catch (Exception e) {
		    //add your error handling code here
			e.printStackTrace();
		}
	}
	
	 public Vector<String []> getInfoTabla(){
	        Vector<String []> v = new Vector<String[]>();
	        for (int i = 0; i < tblReceta.getRowCount(); i++){
	        	if(!tblReceta.getValueAt(i, 0).equals(""))
	            {String [] s = new String [] {""+tblReceta.getValueAt(i, 0),""+tblReceta.getValueAt(i, 1),""+tblReceta.getValueAt(i, 2)};
	            v.add(s);}
	        	else
	        		break;
	         }
	         return v;
	  }

	
	
	
	public JTable getTblIngredientes() {
		return tblIngredientes;
	}

	public void setTblIngredientes(JTable tblIngredientes) {
		this.tblIngredientes = tblIngredientes;
	}

	public JComboBox getCmbCategoriaProducto() {
		return cmbCategoriaProducto;
	}

	public void setCmbCategoriaProducto(JComboBox cmbCategoriaProducto) {
		this.cmbCategoriaProducto = cmbCategoriaProducto;
	}

	public void addListener(ActionListener actionListener){
		this.btnAgregarReceta.addActionListener(actionListener);
		this.btnCancelarProducto.addActionListener(actionListener);
		this.btnOkProducto.addActionListener(actionListener);
		this.btnRetirarReceta.addActionListener(actionListener);
	}
	
	public void limpiar() {
		txtCodigoProducto.setText("");
		txtDescripcionProducto.setText("");
		txtPrecioProducto.setText("");
		TableModel m = tblReceta.getModel();	
		int i =0;
		while(i< tblReceta.getRowCount()) {
			m.setValueAt("", i, 0);
			m.setValueAt("", i, 1);
			m.setValueAt("", i, 2);
			i++;
		}
	}
	
	
	
	public void mostrarMensaje(String mensaje) {
		JOptionPane.showMessageDialog(this, mensaje);
	}

	public JTextField getTxtDescripcionProducto() {
		return txtDescripcionProducto;
	}

	public void setTxtDescripcionProducto(JTextField txtDescripcionProducto) {
		this.txtDescripcionProducto = txtDescripcionProducto;
	}

	public JTextField getTxtCodigoProducto() {
		return txtCodigoProducto;
	}

	public void setTxtCodigoProducto(JTextField txtCodigoProducto) {
		this.txtCodigoProducto = txtCodigoProducto;
	}

	
	
	public JTextField getTxtPrecioProducto() {
		return txtPrecioProducto;
	}

	public void setTxtPrecioProducto(JTextField txtPrecioProducto) {
		this.txtPrecioProducto = txtPrecioProducto;
	}

	public void quitar() {
		int i = tblReceta.getSelectedRow();
		if(i!=-1){
			tblReceta.setValueAt("", i, 1);
			tblReceta.setValueAt("", i, 2);
			tblReceta.setValueAt("", i, 0);
		}
		else
			mostrarMensaje("Selecione una fila");
	}

	public void agregar(ModeloIngrediente m) {
		int i =0;
		while(i< tblReceta.getRowCount()) {
			if(tblReceta.getValueAt(i,1).equals(m.getDescripcion())){
				tblReceta.setValueAt(cmbCantidad.getItemAt(cmbCantidad.getSelectedIndex()), i, 2);
				break;
			}			
			else if(tblReceta.getValueAt(i,0).equals("")){
				tblReceta.setValueAt(m.getDescripcion(), i, 1);
				tblReceta.setValueAt(cmbCantidad.getItemAt(cmbCantidad.getSelectedIndex()), i, 2);
				tblReceta.setValueAt(m.getCodigo(), i, 0);
				break;
			} 
			i++;
		}
		
	}

	public JTable getTblReceta() {
		return tblReceta;
	}

	public void setTblReceta(JTable tblReceta) {
		this.tblReceta = tblReceta;
	}
	
	public boolean contar() {
		int i =0;
		int cont = 0;
		while(i< tblReceta.getRowCount()) {
			if(tblReceta.getValueAt(i,0).equals("")){
				cont++;
			}
			i++;
		}
		return (cont==tblReceta.getRowCount());
	}


}
